/**
 *  @Author: Yan
 *  @Date: 2020/3/11
 *  @Description: 这是首页js
 */
layui.use(['element', 'table'], function () {
    var element = layui.element
        , table = layui.table; //Tab的切换功能，切换事件监听等，需要依赖element模块

    var ECHARTS = { //  图表
        line: (id, title, xAxis_data_arr, series_name, series_data_arr) => {   //  折线图
            // 基于准备好的dom，初始化echarts实例
            var init_echart = echarts.init(document.getElementById(id), 'walden');

            // 指定图表的配置项和数据
            var option = {
                title: {
                    text: title,
                    left: 'center'
                },
                grid: {
                    left: '13%',
                },
                tooltip: {
                    show: true,
                    trigger: 'axis'
                },
                xAxis: {
                    type: 'category',
                    data: xAxis_data_arr
                },
                yAxis: {
                    type: 'value'
                },
                series: [{
                    name: series_name,
                    data: series_data_arr,
                    type: 'line'
                }]
            };

            // 使用刚指定的配置项和数据显示图表。
            init_echart.setOption(option, true);
        },

        pie: (id, title, legend_data_arr, series_name, series_data_arr) => {
            // 基于准备好的dom，初始化echarts实例
            var init_echart = echarts.init(document.getElementById(id), 'walden');

            var option = {
                title: {
                    text: title,
                    left: 'center'
                },
                tooltip: {
                    show: true,
                    trigger: 'item',
                    formatter: (params) => {
                        return params.marker + params.name + ': ' + params.percent + '%';
                    }
                },
                legend: {
                    show: true,
                    bottom: 'bottom',
                    data: legend_data_arr
                },
                series: [
                    {
                        name: series_name,
                        type: 'pie',
                        radius: '55%',
                        center: ['50%', '45%'],
                        data: series_data_arr,
                        emphasis: {
                            itemStyle: {
                                shadowBlur: 10,
                                shadowOffsetX: 0,
                                shadowColor: 'rgba(0, 0, 0, 0.5)'
                            }
                        }
                    }
                ]
            };
            // 使用刚指定的配置项和数据显示图表。
            init_echart.setOption(option, true);
        },
        half_pie: (id, title, series_name, series_data_arr) => {
            // 基于准备好的dom，初始化echarts实例
            var init_echart = echarts.init(document.getElementById(id), 'walden');

            var option = {
                title: {
                    text: title,
                    left: 'center'
                },
                series: [
                    {
                        name: series_name,
                        type: 'pie',
                        radius: ['50%', '70%'],
                        avoidLabelOverlap: false,
                        label: {
                            normal: {
                                show: false,
                                position: 'center',
                                formatter: '{b}\n{d}%'
                            },
                            emphasis: {
                                show: true,
                                textStyle: {
                                    fontSize: 15,
                                    fontWeight: 'bold'
                                }
                            }
                        },
                        labelLine: {
                            normal: {
                                show: false
                            }
                        },
                        data: series_data_arr
                    }
                ]
            };

            // 使用刚指定的配置项和数据显示图表。
            init_echart.setOption(option);
        }
    };

    element.on('tab(docDemoTabBrief)', function (elem) { // 切换选显卡
        var lay_id = $(this).attr('lay-id');
        switch (lay_id) {
            case "one":
                MONITOR.cdr_visit_actual_time(); //门诊实时监控 折线图
                MONITOR.cdr_visit_actual_time_hospitalization(); // 今日住院情况 饼图
                break;
            case "two":
                MONITOR.cdr_visit_actual_time_income(); // 今日住院情况 饼图
                MONITOR.cdr_visit_actual_time_department_revenue(); // 科室收入排行 进度条
                MONITOR.cdr_visit_actual_time_finance_table(); // 财务收入 表格
                break;
        }
    });

    var MONITOR = {// 监控
        cdr_visit_actual_time: () => { // 门诊实时监控 折线图
            var url = PREFIX_CDR_VISITREGNTYPE + "cdr_visit_actual_time",
                jsonData = {}, loadingFun = null,
                returnFun = function (res) {
                    if (res.status == 200) {
                        var res_data = res.data;    // 获取返回数据集
                        if (isEmpty(res_data)) {
                            window.top.layer.alert("门诊实时监控数据为空!", {icon: 0, closeBtn: 0});
                            return;
                        }
                        var start_time = 8, end_time = 17;  //  定义开始和结束时间
                        var chart_id = 'line', chart_title = '门诊实时监控', xAxis_data_arr = [], series_name = '就诊量',
                            series_data_arr = [];   //  定义横坐标和数据列表
                        var cdr_visit_actual_time_sum = 0;  //  定义合计总数
                        for (var i = start_time; i <= end_time; i++) {  // 遍历
                            xAxis_data_arr.push(i); //  添加横坐标
                            var series_data = 0;    //  默认数据为0

                            for (var k = 0; k < res_data.length; k++) { //  遍历获取子坐标
                                var xAxis_data = res_data[k].time;  //  时间
                                if (i == xAxis_data) {    //  是否是一致时间
                                    series_data = res_data[k].count;    //  数据赋值
                                    res_data.splice(k, 1);   //  移除当前元素
                                    break; // 跳出循环
                                }
                            }
                            cdr_visit_actual_time_sum += series_data; // 计算合计总数
                            series_data_arr.push(series_data);  //  添加数据
                        }
                        ECHARTS.line(chart_id, chart_title, xAxis_data_arr, series_name, series_data_arr);    //  画折线图
                        $("#cdr_visit_actual_time_sum_id").html(cdr_visit_actual_time_sum); // 合计赋值
                    } else {
                        window.top.layer.alert(res.message, {icon: 0, closeBtn: 0})
                    }

                };
            AjaxAction.postData(url, jsonData, loadingFun, returnFun);
        },

        cdr_visit_actual_time_hospitalization: () => { // 今日住院情况
            var url = PREFIX_CDR_VISITREGNTYPE + "cdr_visit_actual_time_hospitalization",
                jsonData = {}, loadingFun = null,
                returnFun = function (res) {
                    if (res.status == 200) {
                        var res_data = res.data;    // 获取返回数据集
                        if (isEmpty(res_data)) {
                            window.top.layer.alert("今日住院情况数据为空!", {icon: 0, closeBtn: 0});
                            return;
                        }
                        var chart_id = 'pie', chart_title = '今日住院情况', legend_data_arr = [], series_name = '',
                            series_data_arr = [];   //  定义横坐标和数据列表
                        var slash = ' / ', colon = ': ', cdr_visit_actual_time_hospitalization_text = slash;
                        for (var i = 0; i < res_data.length; i++) { // 遍历数据结果集
                            var legend_data = res_data[i].type, // 类别名称
                                series_data_value = isEmpty(res_data[i].count) ? 0 : res_data[i].count, // 类别值
                                series_data_name = legend_data; // 类别值对应名称
                            legend_data_arr.push(legend_data);  //  添加到类别名称中

                            var series_data = {'value': series_data_value, 'name': series_data_name};   //  数据值
                            series_data_arr.push(series_data); // 数据值添加到数组中

                            cdr_visit_actual_time_hospitalization_text += series_data_name + colon + series_data_value + slash
                        }
                        ECHARTS.pie(chart_id, chart_title, legend_data_arr, series_name, series_data_arr); // 画饼图
                        $('#cdr_visit_actual_time_hospitalization_text_id').html(cdr_visit_actual_time_hospitalization_text); // 文本形式
                    } else {
                        window.top.layer.alert(res.message, {icon: 0, closeBtn: 0})
                    }
                };
            AjaxAction.postData(url, jsonData, loadingFun, returnFun);
        },

        cdr_visit_actual_time_income: () => { // 今日收入
            var url = PREFIX_CDR_VISITREGNTYPE + "cdr_visit_actual_time_income",
                jsonData = {}, loadingFun = null,
                returnFun = function (res) {
                    if (res.status == 200) {
                        var res_data = res.data;    // 获取返回数据集
                        if (isEmpty(res_data)) {
                            window.top.layer.alert("今日收入数据为空!", {icon: 0, closeBtn: 0});
                            return;
                        }
                        var chart_id = 'half_pie', chart_title = '今日收入', series_name = '',
                            series_data_arr = [];   //  定义横坐标和数据列表
                        var outpatient_value = 0, hospitalization_value = 0; // 门诊收入,住院收入
                        for (var i = 0; i < res_data.length; i++) { // 遍历数据结果集
                            var series_data_value = isEmpty(res_data[i].amount) ? 0 : res_data[i].amount, // 类别值
                                series_data_name = res_data[i].type; // 类别值对应名称
                            switch (series_data_name) {
                                case '门诊' :
                                    outpatient_value = series_data_value;
                                    break;
                                case '住院' :
                                    hospitalization_value = series_data_value;
                                    break;

                            }
                            var series_data = {'value': series_data_value, 'name': series_data_name};   //  数据值
                            series_data_arr.push(series_data); // 数据值添加到数组中
                        }
                        ECHARTS.half_pie(chart_id, chart_title, series_name, series_data_arr); // 画圆环图
                        $('#outpatient_value_id').html(outpatient_value);   //  门诊收入赋值
                        $('#hospitalization_value_id').html(hospitalization_value); //  住院收入赋值
                    } else {
                        window.top.layer.alert(res.message, {icon: 0, closeBtn: 0})
                    }
                };
            AjaxAction.postData(url, jsonData, loadingFun, returnFun);
        },

        cdr_visit_actual_time_department_revenue: () => {    //  科室收入排行
            var url = PREFIX_CDR_VISITREGNTYPE + "cdr_visit_actual_time_department_revenue",
                jsonData = {
                    page: 1,
                    limit: 10,
                }, loadingFun = null,
                returnFun = function (res) {
                    if (res.status == 200) {
                        var res_data = res.data;    // 获取返回数据集
                        if (isEmpty(res_data)) {
                            window.top.layer.alert("科室收入排行数据为空!", {icon: 0, closeBtn: 0});
                            return;
                        }
                        $('#rank_list_id').html(''); // 清空网页 怕有遗留
                        var department_revenue_list = res_data.department_revenue_list, //  各科室收入排行
                            department_revenue_sum = isEmpty(res_data.department_revenue_sum) ? 0 : res_data.department_revenue_sum;   //  科室总收入
                        for (var i = 0; i < department_revenue_list.length; i++) { // 遍历数据结果集
                            var department_name = department_revenue_list[i].departmentName, // 科室名称
                                department_code = department_revenue_list[i].departmentCode,    //  科室code
                                department_amount = isEmpty(department_revenue_list[i].amount) ? 0 : department_revenue_list[i].amount;    //  科室收入

                            var department_percentage = (department_revenue_sum == 0) ? '0%' : ((department_amount / department_revenue_sum * 100).toFixed(2)) + '%';   //  百分比
                            var department_revenue_Html = '<div class="rank_list">\n' +
                                '                        <div class="rank_list_title">\n' +
                                '                            <span class="rank_left"><span class="rank_list_title_left">' + (i + 1) + '</span>' + department_name + '</span>\n' +
                                '                            <span class="rank_right">¥' + department_amount + '</span>\n' +
                                '                        </div>\n' +

                                '                        <div class="rank_list_value layui-progress layui-progress-big" lay-showpercent="true">\n' +
                                '                            <div class="layui-progress-bar layui-bg-blue" lay-percent="' + department_percentage + '"></div>\n' +
                                '                        </div>\n' +
                                '                    </div>';
                            $('#rank_list_id').append(department_revenue_Html); //  添加到网页
                        }
                        element.init();
                    } else {
                        window.top.layer.alert(res.message, {icon: 0, closeBtn: 0})
                    }
                };
            AjaxAction.postData(url, jsonData, loadingFun, returnFun);
        },
        cdr_visit_actual_time_finance_table: () => {
            /** 设置表格配置 */
            var tableOption = {
                elem: '#tb'
                , url: PREFIX_CDR_VISITREGNTYPE + 'cdr_visit_actual_time_finance_table'
                , toolbar: ''
                , even: false
                , page: false //是否显示分页
                , limit: 30
                , limits: [30, 60, 100]
                , cols: [[
                    {field: 'numbers', title: '序号', type: 'numbers'}

                    , {field: 'subjectName', title: '科目分类'}
                    , {
                        field: 'amount', title: '收入金额',
                        templet: function (d) {
                            return '￥ ' + (isEmpty(d.amount) ? 0 : d.amount);
                        }
                    }

                ]]
            };

            /** 展示表格数据装载 */
            var tableIns = table.render(tableOption);
        }
    };

    // 默认加载
    MONITOR.cdr_visit_actual_time(); //门诊实时监控 折线图
    MONITOR.cdr_visit_actual_time_hospitalization(); // 今日住院情况 饼图



});

